/*
 * @Author: 无聊 7989314+Hwz1997@user.noreply.gitee.com
 * @Date: 2025-09-12 11:01:19
 * @LastEditors: 无聊 7989314+Hwz1997@user.noreply.gitee.com
 * @LastEditTime: 2025-09-12 11:07:27
 * @FilePath: \keep_motion_api\config\redis\index.js
 * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
 */
const { createClient } = require('redis');

// 从环境变量获取 Redis 连接信息，否则使用默认值
const redisHost = process.env.REDIS_HOST || 'localhost';
const redisPort = process.env.REDIS_PORT || 6379;
const redisPassword = process.env.REDIS_PASSWORD || null; // 如果无密码，则为 null

// 创建 Redis 客户端实例
const redisClient = createClient({
  socket: {
    host: redisHost,
    port: redisPort,
  },
  ...(redisPassword && { password: redisPassword }), // 条件性地添加密码
  // 其他选项，例如 database: 1 (默认使用 0 号数据库)
});

// 处理连接错误
redisClient.on('error', (err) => console.error('Redis Client Error:', err));

// 连接到 Redis 服务器
// 使用 async/await 的方式连接
(async () => {
  try {
    await redisClient.connect();
    console.log('Redis connected successfully.');
  } catch (err) {
    console.error('Failed to connect to Redis:', err);
  }
})();

// 优雅关闭：当 Node 进程结束时，关闭 Redis 连接
process.on('SIGINT', async () => {
  await redisClient.quit();
  console.log('Redis connection closed.');
  process.exit(0);
});

// 导出配置好的客户端
module.exports = redisClient;